<?php
/*
Nutzung dieses Scripts nur gestattet, wenn Kommentare (PHP und HTML) nicht gelöscht werden, oder ein Link zu folgender Adresse gesetzt wird:
URL: http://www.web-spirit.de/webdesign-tutorial/7/RSS-Feed-auslesen-mit-PHP
Beschreibung: RSS Feed auslesen mit PHP
Autor: Sebastian Gollus
Internet: http://www.web-spirit.de
Version: 1.0.200905
*/

// Funktionsaufruf z.B.: getRssfeed("http://www.web-spirit.de/web-spirit.xml","web-spirit","auto",3,3);

function getRssfeed($rssfeed, $cssclass="", $encode="auto", $anzahl=10, $mode=0)
{
	// $encode e[".*"; "no"; "auto"]

	// $mode e[0; 1; 2; 3]:
	// 0 = nur Titel und Link der Items weden ausgegeben
	// 1 = Titel und Link zum Channel werden ausgegeben
	// 2 = Titel, Link und Beschreibung der Items werden ausgegeben
	// 3 = 1 & 2
	
	// Zugriff auf den RSS Feed
	$data = @file($rssfeed);
	$data = implode ("", $data);
	if(strpos($data,"</item>") > 0)
	{
		preg_match_all("/<item.*>(.+)<\/item>/Uism", $data, $items);
		$atom = 0;
	}
	elseif(strpos($data,"</entry>") > 0)
	{
		preg_match_all("/<entry.*>(.+)<\/entry>/Uism", $data, $items);
		$atom = 1;
	}
	
	// Encodierung
	if($encode == "auto")
	{
		preg_match("/<?xml.*encoding=\"(.+)\".*?>/Uism", $data, $encodingarray);
		$encoding = $encodingarray[1];
	}
	else
	{$encoding = $encode;}
	
	echo "<!-- RSS Feed Script von Sebastian Gollus: http://www.web-spirit.de/webdesign-tutorial/7/RSS-Feed-auslesen-mit-PHP -->\n";
	echo "<div class=\"rssfeed_".$cssclass."\">\n";
	
	// Titel und Link zum Channel 
	if($mode == 1 || $mode == 3)
	{
		if(strpos($data,"</item>") > 0)
		{
			$data = preg_replace("/<item.*>(.+)<\/item>/Uism", '', $data);
		}
		else
		{
			$data = preg_replace("/<entry.*>(.+)<\/entry>/Uism", '', $data);
		}
		preg_match("/<title.*>(.+)<\/title>/Uism", $data, $channeltitle);
		if($atom == 0)
		{
			preg_match("/<link>(.+)<\/link>/Uism", $data, $channellink);
		}
		elseif($atom == 1)
		{
			preg_match("/<link.*alternate.*text\/html.*href=[\"\'](.+)[\"\'].*\/>/Uism", $data, $channellink);
		}

		$channeltitle = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $channeltitle);
		$channellink = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $channellink);

		echo "<h1><a href=\"".$channellink[1]."\" title=\"";
		if($encode != "no")
		{echo htmlentities($channeltitle[1],ENT_QUOTES,$encoding);}
		else
		{echo $channeltitle[1];}
		echo "\">";
		if($encode != "no")
		{echo htmlentities($channeltitle[1],ENT_QUOTES,$encoding);}
		else
		{echo $channeltitle[1];}
		echo "</a></h1>\n";
	}
	
	// Titel, Link und Beschreibung der Items
	foreach ($items[1] as $item) {
		preg_match("/<title.*>(.+)<\/title>/Uism", $item, $title);
		if($atom == 0)
		{
			preg_match("/<link>(.+)<\/link>/Uism", $item, $link);
		}
		elseif($atom == 1)
		{
			preg_match("/<link.*alternate.*text\/html.*href=[\"\'](.+)[\"\'].*\/>/Uism", $item, $link);
		}
		
		if($atom == 0)
		{
			preg_match("/<description>(.*)<\/description>/Uism", $item, $description);
		}
		elseif($atom == 1)
		{
			preg_match("/<summary.*>(.*)<\/summary>/Uism", $item, $description);
		}
	
		$title = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $title);
		$description = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $description);
		$link = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $link);
		
		echo "<p class=\"link\">\n";
		echo "<a href=\"".$link[1]."\" title=\"";
		if($encode != "no")
		{echo htmlentities($title[1],ENT_QUOTES,$encoding);}
		else
		{echo $title[1];}
		echo "\">";
		if($encode != "no")
		{echo htmlentities($title[1],ENT_QUOTES,$encoding)."</a>\n";}
		else
		{echo $title[1]."</a>\n";}
		echo "</p>\n";
		if($mode == 2 || $mode == 3 && ($description[1]!="" && $description[1]!=" "))
		{
			echo "<p class=\"description\">\n";
			if($encode != "no")
			{echo htmlentities($description[1],ENT_QUOTES,$encoding)."\n";}
			else
			{echo $description[1];}
			echo "</p>\n";
		}
		if ($anzahl-- <= 1) break;
	}
	echo "</div>\n\n";
}